/**
 * WebSocket 管理器
 * 用于创建和管理多个 WebSocket 端点
 */
const WebSocketServer = require("websocket").server;

// 存储所有 WebSocket 服务器实例
const wsInstances = {};

/**
 * 初始化 WebSocket 管理器
 * @param {http.Server} server - HTTP 服务器实例
 */
function initWebSocketManager(server) {
  console.log("WebSocket 管理器初始化");
  
  // 创建主 WebSocket 服务器
  const wsServer = new WebSocketServer({
    httpServer: server,
    // 自动接受协议
    autoAcceptConnections: false
  });
  
  // 处理请求
  wsServer.on("request", (request) => {
    // 获取请求路径
    const path = request.resourceURL.pathname;
    console.log(`收到 WebSocket 连接请求，路径: ${path}`);
    
    // 根据路径分发请求
    if (wsInstances[path]) {
      wsInstances[path].handleRequest(request);
    } else {
      console.log(`未找到路径 ${path} 的处理程序，拒绝连接`);
      request.reject(404, `未找到路径 ${path} 的处理程序`);
    }
  });
  
  return {
    /**
     * 注册 WebSocket 端点
     * @param {string} path - WebSocket 端点路径
     * @param {function} handler - 处理连接的函数
     */
    registerEndpoint: (path, handler) => {
      console.log(`注册 WebSocket 端点: ${path}`);
      wsInstances[path] = {
        handleRequest: handler
      };
    }
  };
}

module.exports = initWebSocketManager;